6807
4392
Esta questão já tem respostas aqui:
Express js - não é possível redirecionar
(4 respostas)
Fechado há 7 anos.
Estou usando passportjs com um middleware abaixo. É para verificar se o usuário está logado quando solicita certas coisas. Se ele não estiver conectado, ele deve ser redirecionado para a página de login.
Tenho uma rota de solicitação da seguinte forma:
app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update);
Esta rota será chamada quando o usuário tentar atualizar um recurso chamado Fantasy Team no site
auth.requiresLogin é um middleware da seguinte forma:
exportações.requiresLogin = função (req, res, próximo) {
if (req.isAuthenticated ()) {
voltar a seguir ()
}
return res.redirect ("/ signin");
};
Depois de fazer login no meu usuário, simulei a expiração da sessão excluindo o cookie da sessão. Posteriormente, através do site, fiz uma solicitação PUT '/ fantasyteams / 123' para atualizar o time fantasia número 123.
fantasygames.update é simplesmente uma operação de salvamento do mongodb / mongoose:
exportações.atualização = função (req, res) {
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend (fantasyteam, req.body);
fantasyteam.save (function (err) {
res.jsonp (equipe de fantasia);
});
};
Como esperado, o gerenciador de rotas (app.put ...) acima pegou a solicitação, passe-a para o middleware auth.requiresLogin para verificar se o usuário está conectado. Portanto, acontece que o usuário não está conectado desde que eu excluí seu cookie de sessão. res.redirect é chamado conforme o esperado. No entanto, o site não redireciona para a página de login. Eu vejo isso nos logs de comando do node.js.
PUT / signin 404 328ms
O que eu fiz errado? 
Parece que o problema é que você não tem um gerenciador de rota para PUT / signin. A solicitação original era um put, portanto, quando ele redireciona, ainda faz parte da mesma solicitação "put" do navegador. Basta adicionar um manipulador para put / post / qualquer coisa com app.all ('/ signin')
3
|
Não é a resposta que você está procurando? Navegue por outras perguntas com cookies de sessão node.js marcados como passport.js ou faça sua própria pergunta.